Оператор [skip]

картинка

Описание

Операторы узла выполняются последовательно — от первого к последнему. Оператор [skip] предназначен для того, чтобы иметь возможность отменить обработку следующих за ним операторов логического узла.

Пример

-- Узел "N1_sim_found"
--------------------------------------
-- Проверить что Сим-карта находится в слоте
N1_sim_found = {                                               -- Создаём логический узел "simfound"
    {
        ["load-ubus"] = function (nodes)                   -- Оператор [load-ubus] через системную шину 
            return {                                       -- Получает от GSM-модемеа статус наличия
                object = "tsmodem.driver",                 -- Сим-карты в слоте
                method = "cpin", 
                params = {},                               -- Результат:            
            }                                              -- {
        end,                                               --    "value": "true",
    }                                                      --    "updated": "1773160342"
}                                                          --    "changed": "1773160300"
                                                           --     "command": "AT+CPIN?"
                                                           -- }


-- Узел "N2_sim_registered"
--------------------------------------
-- Если Сим-карта в слоте, то получить статус регистрации в GSM-сети
N2_sim_registered = {
    {
        ["skip"] = function(nodes)
            return {
                return (N1_sim_found.value == false)
            }
        end
    },

    {   -- этот оператор [load-ubus] не будет выполнен, если 
        -- предшествующий ему оператор [skip] вернёт значение "true"
        ["load-ubus"] = function(nodes)
            return {
                ubus = "tsmodem.driver",     -- Имя объекта на шине
                method = "reg",              -- Вызываемый метод
                params = {},                 -- без параметров
            }
        end
    },
},

Как это работает

  • Если [skip] возвращает true, последующие операторы узла не выполняются;
  • Если [skip] возвращает false, выполнение продолжается;
  • В примере выше оператор [load-ubus] в узле N2_sim_registered будет выполнен только в том случае, если SIM-карта найдена (N1_sim_found.value == false возвращает false). Если SIM-карты нет, выполнение прерывается.